package systole.persistence.brokersInterface;

import java.util.List;

import systole.domain.clinicalInformation.Medicine;
import systole.domain.clinicalInformation.MedicinePatient;
import systole.domain.persons.Patient;
import systole.exceptions.ExceptionDAO;

/**
 * @author jmj
 * 
 */
public interface MedicineByPatientBroker {

	/**
	 * @param medicinePatient
	 * @throws ExceptionDAO
	 */
	public void insert(MedicinePatient medicinePatient) throws ExceptionDAO;

	/**
	 * @param medicinePatient
	 * @throws ExceptionDAO
	 */
	public void update(MedicinePatient medicinePatient) throws ExceptionDAO;

        /**
	 * @param medicinePatient
	 * @throws ExceptionDAO
	 */
	public void delete(MedicinePatient medicinePatient) throws ExceptionDAO;

	/**
	 * @param patient
	 * @return all patient medicines
	 * @throws ExceptionDAO
	 */
	public List<MedicinePatient> getAllPatientMedicines(Patient patient)
			throws ExceptionDAO;

	/**
	 * 
	 * @param medicine
	 * @param patient
	 * @return if patient medicine exist
	 * @throws ExceptionDAO
	 */
	public boolean existMedicineByPatient(Medicine medicine, Patient patient)
			throws ExceptionDAO;

}
